aoにおけるメッセージング
メッセージがaoの並列コンピュート機能をどのように提供するかを学ぶ
ao
では、すべてのプロセスが並行して実行され、高度にスケーラブルな環境を作り出します。プロセス間での従来の直接関数呼び出しは実行できません。なぜなら、各プロセスが独立して非同期に動作するからです。
メッセージングは、非同期通信を可能にすることでこの問題に対処します。プロセスは、互いに直接関数を呼び出すのではなく、メッセージを送受信します。この方法により、プロセスがメッセージに応答できる柔軟で効率的な相互作用が実現し、システムのスケーラビリティと応答性が向上します。
まず、aos
におけるメッセージングの基本を探り、受信トレイに受け取ったメッセージを確認し、他のプロセスにメッセージを送信する方法を学びます。
ビデオチュートリアル
ステップ1: メッセージ構造の理解
メッセージの基本:
ao
のメッセージは、複数の値を保持できる柔軟なデータ構造であるLuaテーブルを使用して構築されます。これらのテーブル内で「Data」フィールドは重要であり、メッセージの内容やペイロードが含まれています。この構造により、プロセス間での情報の効率的な送受信が可能になり、ao
のプリミティブがArweaveの基盤となる機能を活用して複雑で構成可能な操作を促進します。詳細な仕様については、G8wayの仕様ページを参照してください。
例:
{ Data = "Hello from Process A!" }
はシンプルなメッセージです。
ステップ2: aos CLIを開く
- ターミナルで
aos
と入力して、aosコマンドラインインターフェイス(CLI)を起動します。
aos
ステップ3: メッセージを送信する方法
Send({ Target = "process ID", Data = "Hello World!" })
- Send:
Send
関数は、aosインタラクティブ環境でグローバルに利用可能です。 - Target: 特定のプロセスにメッセージを送信するには、メッセージに
Target
フィールドを含めます。 - Data:
Data
は、受信プロセスに送信したいテキストメッセージです。この例では、メッセージは"Hello World!"です。
ステップ4: Morpheus
のプロセスIDを保存する
以下で提供されたプロセスIDを使用し、変数としてMorpheus
に保存します。
ajrGnUq9x9-K1TY1MSiKwNWhNTbq7-IdtFa33T59b7s
Copy the process ID above and store it as a variable by running the below command in the aos CLI:
Morpheus = "ajrGnUq9x9-K1TY1MSiKwNWhNTbq7-IdtFa33T59b7s"
これにより、プロセスIDがMorpheus
という名前の変数として保存され、特定のプロセスIDと対話しやすくなります。
INFO
Morpheus
変数を作成する際、返されるレスポンスはundefined
のみであるべきです。これは予想される動作です。変数が正常に作成されたか確認するには、Morpheus
と入力してEnterを押します。保存したプロセスIDが表示されるはずです。
Morpheus
変数の確認
-- Check the Morpheus variable by typing `Morpheus`
Morpheus
-- Expected Results:
ajrGnUq9x9-K1TY1MSiKwNWhNTbq7-IdtFa33T59b7s
-- If `undefined` is returned,
-- then the variable was not created successfully.
ステップ5: Morpheusにメッセージを送信する
MorpheusのプロセスIDを取得し、変数に保存した後、彼と通信する準備が整いました。これを行うには、Send関数を使用します。モーフィアス自身は、aoで実行されている並行プロセスです。彼は一連のハンドラを使用してメッセージを受信し送信します。メッセージを彼に送って、どうなるか見てみましょう。
Send({ Target = Morpheus, Data = "Morpheus?" })
- あなたの
Target
はMorpheus
であり、これは以前にMorpheus
のプロセスIDを使用して定義した変数です。 Data
は、Morpheusに送信したいメッセージです。この場合、メッセージは"Morpheus?"です。
期待される結果:
-- Your Message Command
Send({ Target = Morpheus, Data = "Morpheus?"})
-- Message is added to the outbox
message added to outbox
-- A New Message is received from `Morpheus`'s process ID
New Message From BWM...ulw: Data = I am here. You are f
Morpheusにメッセージを送信し、応答を受け取りましたが、完全なメッセージは読めません。次はInbox
について学び、メッセージを読む方法を見ていきましょう。
ステップ6: インボックス
Inbox
は、他のプロセスからのメッセージを受信する場所です。
INFO
インボックスメッセージの詳細な表示を確認するには、メッセージの概念ページに移動してください。
インボックスに受信したメッセージがいくつあるかを確認します。
aos CLIの中で、次のコマンドを入力します:
#Inbox
チュートリアルを積極的に進めている場合、インボックスには多くのメッセージがないでしょう。しかし、aos環境で実験を行っている場合、インボックスに1つ以上のメッセージがあるかもしれません。
Example Return:
-- Your Inbox Command
#Inbox
-- The command will return the number of messages in your inbox.
4
上記の例では、返答は4
となっており、インボックスに4つのメッセージがあることを示しています。
私たちは積極的にMorpheus
の応答を探しているので、彼のメッセージが最後に受信されたメッセージであると仮定します。インボックスの最後のメッセージを読むには、次のコマンドを入力します:
Inbox[#Inbox].Data
このコマンドは、メッセージからデータを分離し、データの内容のみを読むことを可能にします。 The Expected Return:
-- Your Inbox[x].Data Command
Inbox[#Inbox].Data
-- The command will return the `Data` of the message.
-- Data is what usually represents the text-based message
-- received from one process to another.
I am here. You are finally awake. Are you ready to see how far the rabbit hole goes?
あなたは現在、自分のプロセスを使って、aoで実行されている別の並行プロセスであるMorpheusと通信しています。次のチュートリアルのステップに進む準備が整いました。
ステップ7: タグ付きメッセージの送信
タグの目的: aosメッセージのタグは、メッセージを効率的に分類、ルーティング、処理するために使用されます。これらはメッセージ処理において重要な役割を果たし、特に複数のプロセスや複雑なワークフローを扱う際に役立ちます。
いくつかのプロセスは、特定のタグを持つメッセージと相互作用するHandlers
を使用します。たとえば、特定のタグを持つメッセージのみと相互作用するハンドラを持つプロセスがあり、これについてはチャットルームチュートリアルでの例を見ていきます。
メッセージにタグを使用する方法
Morpheusの場合、タグを使用してメッセージを分類できます。また、Morpheusは自律プロセスであるため、特定のタグを持つメッセージと相互作用できるハンドラを持っています。
メッセージにタグを追加する:
- メッセージの
Data
は、別のプロセスに送信したいテキストメッセージであることは既に知っています。以前、タグなしでMorpheusにメッセージを送りましたが、彼は正確に一致するデータに対してハンドラを使用して応答しました。
Morpheusに私たちが準備ができていることを示そう
Morpheusに、タグAction
と値rabbithole
を持つメッセージを送信します。
Example:
Send({ Target = Morpheus, Data = "Code: rabbithole", Action = "Unlock" })
Read the message from Morpheus:
Inbox[#Inbox].data
Expected Return:
タグを使用するための追加のヒント
- 一貫したタグ付け: メッセージ処理をより予測可能にするために、アプリケーションに一貫したタグ付けシステムを開発しましょう。
- タグ名: タグには明確で説明的な名前を選んでください。これにより、メッセージの目的や文脈を一目で理解しやすくなります。
- タグのセキュリティ: タグは暗号化されず隠されないため、敏感な情報をタグとして使用しないように注意してください。
タグの高度な使用法
- ワークフロー管理: タグは、メッセージが複数の段階やプロセスを通過するシステムにおいて、ワークフローを管理するのに役立ちます。
メッセージングに関する追加のヒント
- メッセージ構造: より複雑なメッセージングニーズに対応するために、
Epoch
、From
、Nonce
などの他のフィールドも探ってみてください。 - デバッグ: デバッグ用にメッセージを印刷するために
Dump
関数を使用してください。 - セキュリティ考慮事項: メッセージの内容や処理には注意し、プライベートまたは敏感と見なされるものを送信しないでください。
結論
タグ付きメッセージの送信方法を学びました。これは、aosにおけるメッセージの分類とルーティングにおいて強力なツールです。
Morpheusは、あなたを次のステージに正式に招待しました。次のチュートリアルのステップであるチャットルームの作成に進む準備が整いました。